.TH std::gets 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::gets \- std::gets

.SH Synopsis
   Defined in header <cstdio>
   char* gets( char* str );    (deprecated in C++11)
                               (removed in C++14)

   Reads stdin into given character string until a newline character is found or
   end-of-file occurs.

.SH Parameters

   str - character string to be written

.SH Return value

   str on success, a null pointer on failure.

   If the failure has been caused by end of file condition, additionally sets the eof
   indicator (see std::feof()) on stdin. If the failure has been caused by some other
   error, sets the error indicator (see std::ferror()) on stdin.

.SH Notes

   The std::gets() function does not perform bounds checking. Therefore, this function
   is extremely vulnerable to buffer-overflow attacks. It cannot be used safely (unless
   the program runs in an environment which restricts what can appear on stdin). For
   this reason, the function was deprecated in C++11 and removed altogether in C++14.
   std::fgets() may be used instead.

.SH Example


// Run this code

 #include <array>
 #include <cstdio>
 #include <cstring>

 int main()
 {
     std::puts("Never use std::gets(). Use std::fgets() instead!");

     std::array<char, 16> buf;

     std::printf("Enter a string:\\n>");

     if (std::fgets(buf.data(), buf.size(), stdin))
     {
         const auto len = std::strlen(buf.data());
         std::printf(
             "The input string:\\n[%s] is %s and has the length %li characters.\\n",
             buf.data(), len + 1 < buf.size() ? "not truncated" : "truncated", len
         );
     }
     else if (std::feof(stdin))
     {
         std::puts("Error: the end of stdin stream has been reached.");
     }
     else if (std::ferror(stdin))
     {
         std::puts("I/O error when reading from stdin.");
     }
     else
     {
         std::puts("Unknown stdin error.");
     }
 }

.SH Possible output:

 Never use std::gets(). Use std::fgets() instead!
 Enter a string:
 >Living on Earth is expensive, but it does include a free trip around the Sun.
 The input string:
 [Living on Earth] is truncated and has the length 15 characters.

.SH See also

   scanf  reads formatted input from stdin, a file stream or a buffer
   fscanf \fI(function)\fP
   sscanf
   fgets  gets a character string from a file stream
          \fI(function)\fP
   fputs  writes a character string to a file stream
          \fI(function)\fP
   C documentation for
   gets
